package scau.hotel.hotel_service.service;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import scau.hotel.hotel_service.entity.Payment;
import scau.hotel.hotel_service.vo.GetPriceVo;
import scau.hotel.hotel_service.vo.LineEChartsVo;
import scau.hotel.hotel_model.controller.RespBean;

import java.util.Date;
import java.util.List;

/**
 * (Payment)表服务接口
 *
 * @author makejava
 * @since 2022-03-28 20:19:16
 */
public interface PaymentService {

    /**
     * 通过ID查询单条数据
     *
     * @param paymentId 主键
     * @return 实例对象
     */
    Payment queryById(Integer paymentId);

    /**
     * 分页查询
     *
     * @param payment 筛选条件
     * @return 查询结果
     */
    List<Payment> queryAll(Payment payment);

    /**
     * 查询段时间的每一天的营业额
     *
     * @param getPriceVo 筛选条件
     * @return 查询结果
     */
    List<LineEChartsVo> querySomeDayInCome(GetPriceVo getPriceVo);

    /**
     * 分页查询
     *
     * @param payment 筛选条件
     * @param pageRequest      分页对象
     * @return 查询结果
     */
    Page<Payment> queryByPage(Payment payment, PageRequest pageRequest);

    /**
     * 新增数据
     *
     * @param payment 实例对象
     * @return 实例对象
     */
    RespBean insert(Payment payment);

    /**
     * 修改数据
     *
     * @param payment 实例对象
     * @return 实例对象
     */
    RespBean update(Payment payment);

    /**
     * 通过主键删除数据
     *
     * @param paymentId 主键
     * @return 是否成功
     */
    boolean deleteById(Integer paymentId);


    /**
     * 根据折扣计算最后价格
     *
     * @param checkinInforVo
     * @return
     */
    RespBean getFinalPrice(GetPriceVo checkinInforVo);

    RespBean getPrice(Date checkinD, Date checkoutD, Integer roomTypeId);

//    void ConfirmInsert();

}
